16fd294748e7ebb439f3eb09027a1ae4bde2ca61,src/main/java/com/myapp/repository/UserRepositoryImpl.java,UserRepositoryImpl,findFollowings,#User#Optional#Optional#number#,26
Before Change
);
query.orderBy(cb.desc(root.get("id")));
return entityManager
.createQuery(query)
.setMaxResults(Optional.ofNullable(maxSize).orElse(20))
.getResultList();
}
After Change
Optional<Long> sinceId,
Optional<Long> maxId,
Integer maxSize) {
final QUser qUser = QUser.user;
final QRelationship qRelationship = QRelationship.relationship;
final JPQLQuery<Relationship> relationshipSubQuery = JPAExpressions.selectFrom(qRelationship)
.where(qRelationship.follower.eq(user)
.and(qRelationship.followed.eq(qUser))
);
return queryFactory.selectFrom(qUser)
.where(relationshipSubQuery.exists()
.and(sinceId.map(qUser.id::gt).orElse(null))
.and(maxId.map(qUser.id::lt).orElse(null))
)
.orderBy(qUser.id.desc())
.limit(Optional.ofNullable(maxSize).orElse(20))
.fetch();
}